////
////  session.m
////  httpDemo
////
////  Created by YQ05 on 2018/7/24.
////  Copyright © 2018年 yuzhanjie. All rights reserved.
////
//
//#import "session.h"
//
//@implementation session
//
//@end
//#import "ViewController.h"
//
//// get  net:http://apistore.baidu.com/apiworks/servicedetail/112.html
//// post net:http://www.juhe.cn/docs/api/id/46/aid/131
//
//#define NSLOG(OBJECT) NSLog(@"%@", OBJECT)
//
//#define Get_Url_Apikey @"159d95a8c050074fe3ca0df0d901fc62"
//#define Get_Url_String @"http://apis.baidu.com/apistore/weatherservice/weather?citypinyin=chengdu"
//
//#define Post_Url_Apikey @"由于有次数限制，故请进入上方 post net 网址，注册聚合账号，申请数据，填入自己申请的appkey"
//#define Post_Url_String @"http://apis.juhe.cn/cook/queryid"
//#define Post_Url_Parameter_Id @(1001)
//#define Post_Url_Parameter_Dtype @"json"
//
//@interface ViewController ()
//
//@end
//
//@implementation ViewController
//
//- (void)viewDidLoad {
//    [super viewDidLoad];
//}
//
//#pragma mark - Request methods
//- (IBAction)getRequest:(id)sender {
//    
//    // 1、构造URL资源地址
//    NSURL *url = [NSURL URLWithString:Get_Url_String];
//    // 2、创建Request请求
//    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//    // 3、配置Request请求
//    // 设置请求方法
//    request.HTTPMethod = @"GET";
//    // 设置请求超时
//    request.timeoutInterval = 10.0;
//    // 设置头部参数
//    [request addValue:Get_Url_Apikey forHTTPHeaderField:@"apikey"];
//    
//    // 4、构造NSURLSessionConfiguration
//    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//    // 5、构造NSURLSession，网络会话；
//    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];;
//    // 6、构造NSURLSessionTask，会话任务；
//    NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//        
//        // 请求失败，打印错误信息
//        if (error) {
//            NSLOG(error.localizedDescription);
//        }
//        // 8、请求成功，解析数据
//        else {
//            // 直接将data数据转成OC字符串(NSUTF8StringEncoding)；
//            // NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//            
//            // JSON数据格式解析
//            id object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
//            // 9、判断是否解析成功
//            if (error) {
//                NSLOG(error.localizedDescription);
//            }else {
//                NSLOG(object);
//                // 解析成功，处理数据，通过GCD获取主队列，在主线程中刷新界面。
//                dispatch_async(dispatch_get_main_queue(), ^{
//                    // 刷新界面....
//                });
//            }
//        }
//    }];
//    // 7、执行任务
//    [task resume];
//#import "ViewController.h"
//    
//    // get  net:http://apistore.baidu.com/apiworks/servicedetail/112.html
//    // post net:http://www.juhe.cn/docs/api/id/46/aid/131
//    
//#define NSLOG(OBJECT) NSLog(@"%@", OBJECT)
//    
//#define Get_Url_Apikey @"159d95a8c050074fe3ca0df0d901fc62"
//#define Get_Url_String @"http://apis.baidu.com/apistore/weatherservice/weather?citypinyin=chengdu"
//    
//#define Post_Url_Apikey @"由于有次数限制，故请进入上方 post net 网址，注册聚合账号，申请数据，填入自己申请的appkey"
//#define Post_Url_String @"http://apis.juhe.cn/cook/queryid"
//#define Post_Url_Parameter_Id @(1001)
//#define Post_Url_Parameter_Dtype @"json"
//    
//    @interface ViewController ()
//    
//    @end
//    
//    @implementation ViewController
//    
//    - (void)viewDidLoad {
//        [super viewDidLoad];
//    }
//    
//#pragma mark - Request methods
//    - (IBAction)getRequest:(id)sender {
//        
//        // 1、构造URL资源地址
//        NSURL *url = [NSURL URLWithString:Get_Url_String];
//        // 2、创建Request请求
//        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//        // 3、配置Request请求
//        // 设置请求方法
//        request.HTTPMethod = @"GET";
//        // 设置请求超时
//        request.timeoutInterval = 10.0;
//        // 设置头部参数
//        [request addValue:Get_Url_Apikey forHTTPHeaderField:@"apikey"];
//        
//        // 4、构造NSURLSessionConfiguration
//        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//        // 5、构造NSURLSession，网络会话；
//        NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];;
//        // 6、构造NSURLSessionTask，会话任务；
//        NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//            
//            // 请求失败，打印错误信息
//            if (error) {
//                NSLOG(error.localizedDescription);
//            }
//            // 8、请求成功，解析数据
//            else {
//                // 直接将data数据转成OC字符串(NSUTF8StringEncoding)；
//                // NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//                
//                // JSON数据格式解析
//                id object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
//                // 9、判断是否解析成功
//                if (error) {
//                    NSLOG(error.localizedDescription);
//                }else {
//                    NSLOG(object);
//                    // 解析成功，处理数据，通过GCD获取主队列，在主线程中刷新界面。
//                    dispatch_async(dispatch_get_main_queue(), ^{
//                        // 刷新界面....
//                    });
//                }
//            }
//        }];
//        // 7、执行任务
//        [task resume];
//    }
//    - (IBAction)postRequest:(id)sender {
//        
//        // 1、创建URL资源地址
//        NSURL *url = [NSURL URLWithString:Post_Url_String];
//        // 2、创建Reuest请求
//        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//        // 3、配置Request
//        request.timeoutInterval = 10.0;
//        request.HTTPMethod = @"POST";
//        // 4、构造请求参数
//        // 4.1、创建字典参数，将参数放入字典中，可防止程序员在主观意识上犯错误，即参数写错。
//        NSDictionary *parametersDict = @{@"id":Post_Url_Parameter_Id, @"key":Post_Url_Apikey, @"dtype":Post_Url_Parameter_Dtype};
//        // 4.2、遍历字典，以“key=value&”的方式创建参数字符串。
//        NSMutableString *parameterString = [NSMutableString string];
//        
//        for (NSString *key in parametersDict.allKeys) {
//            // 拼接字符串
//            [parameterString appendFormat:@"%@=%@&", key, parametersDict[key]];
//        }
//        // 4.3、截取参数字符串，去掉最后一个“&”，并且将其转成NSData数据类型。
//        NSData *parametersData = [[parameterString substringToIndex:parameterString.length - 1] dataUsingEncoding:NSUTF8StringEncoding];
//        
//        // 5、设置请求报文
//        request.HTTPBody = parametersData;
//        // 6、构造NSURLSessionConfiguration
//        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//        // 7、创建网络会话
//        NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
//        // 8、创建会话任务
//        NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//            // 10、判断是否请求成功
//            if (error) {
//                NSLOG(error.localizedDescription);
//            }else {
//                // 如果请求成功，则解析数据。
//                id object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
//                // 11、判断是否解析成功
//                if (error) {
//                    NSLOG(error.localizedDescription);
//                }else {
//                    // 解析成功，处理数据，通过GCD获取主队列，在主线程中刷新界面。
//                    NSLOG(object);
//                    dispatch_async(dispatch_get_main_queue(), ^{
//                        // 刷新界面...
//                    });
//                }
//            }
//            
//        }];
//        // 9、执行任务
//        [task resume];
//        
//    }
//    
//    @end}
//- (IBAction)postRequest:(id)sender {
//    
//    // 1、创建URL资源地址
//    NSURL *url = [NSURL URLWithString:Post_Url_String];
//    // 2、创建Reuest请求
//    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//    // 3、配置Request
//    request.timeoutInterval = 10.0;
//    request.HTTPMethod = @"POST";
//    // 4、构造请求参数
//    // 4.1、创建字典参数，将参数放入字典中，可防止程序员在主观意识上犯错误，即参数写错。
//    NSDictionary *parametersDict = @{@"id":Post_Url_Parameter_Id, @"key":Post_Url_Apikey, @"dtype":Post_Url_Parameter_Dtype};
//    // 4.2、遍历字典，以“key=value&”的方式创建参数字符串。
//    NSMutableString *parameterString = [NSMutableString string];
//    
//    for (NSString *key in parametersDict.allKeys) {
//        // 拼接字符串
//        [parameterString appendFormat:@"%@=%@&", key, parametersDict[key]];
//    }
//    // 4.3、截取参数字符串，去掉最后一个“&”，并且将其转成NSData数据类型。
//    NSData *parametersData = [[parameterString substringToIndex:parameterString.length - 1] dataUsingEncoding:NSUTF8StringEncoding];
//    
//    // 5、设置请求报文
//    request.HTTPBody = parametersData;
//    // 6、构造NSURLSessionConfiguration
//    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
//    // 7、创建网络会话
//    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
//    // 8、创建会话任务
//    NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//        // 10、判断是否请求成功
//        if (error) {
//            NSLOG(error.localizedDescription);
//        }else {
//            // 如果请求成功，则解析数据。
//            id object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
//            // 11、判断是否解析成功
//            if (error) {
//                NSLOG(error.localizedDescription);
//            }else {
//                // 解析成功，处理数据，通过GCD获取主队列，在主线程中刷新界面。
//                NSLOG(object);
//                dispatch_async(dispatch_get_main_queue(), ^{
//                    // 刷新界面...
//                });
//            }
//        }
//        
//    }];
//    // 9、执行任务
//    [task resume];
//    
//}
//
//@end
